﻿using System.Drawing;

namespace Kyoh.Lib.Excel
{
    /// <summary>Range オブジェクトまたは Style オブジェクトの四辺の罫線を表す 4 つの Border オブジェクトのコレクションです。</summary>
	public class Borders : Component
	{
		private Borders(object exBorders, Component parent)
			: base(exBorders, parent)
		{
		}

        /// <summary>Excel COM オブジェクトで、新しいインスタンスを初期化します。</summary>
        /// <param name="obj">Excel COM オブジェクト</param>
        /// <param name="parent">親となる <see cref="Component"/> オブジェクト。</param>
		internal static Borders Create(object obj, Component parent)
		{
			return obj == null ? null : new Borders(obj, parent);
		}

        /// <summary>指定されたインデックスの罫線を取得します。</summary>
        /// <param name="index">対象の罫線のインデックス。</param>
		public Border this[BordersIndex index]
		{
			get { return Border.Create(base.GetProperty("Item", (int)index), this); }
		}

        /// <summary>罫線の数を取得します。</summary>
		public int Count
		{
			get { return (int)base.GetProperty("Count"); }
		}
		
        /// <summary>罫線の色を取得・設定します。</summary>
		public Color Color
		{
			get { return Color.FromArgb((int)base.GetProperty("Color")); }
			set { base.SetProperty("Color", value.ToArgb()); }
		}

        /// <summary>罫線の色をインデックスで取得・設定します。</summary>
		public int? ColorIndex
		{
			get { return base.GetProperty("ColorIndex") as int?; }
			set { base.SetProperty("ColorIndex", value.Value); }
		}

        /// <summary>罫線のスタイルを取得・設定します。</summary>
		public LineStyle? LineStyle
		{
			get { return base.GetProperty("LineStyle") as LineStyle?; }
			set { base.SetProperty("LineStyle", (int)value.Value); }
		}
		
        /// <summary>罫線の太さを取得・設定します。</summary>
		public BorderWeight? BorderWeight
		{
			get { return base.GetProperty("BorderWeight") as BorderWeight?; }
			set { base.SetProperty("BorderWeight", (int)value.Value); }
		}
	}
}
